package cn.iocoder.yudao.module.cont.dal.mysql.base;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.cont.controller.admin.base.vo.PlanInfoPageReqVO;
import cn.iocoder.yudao.module.cont.dal.dataobject.base.PlanInfoDO;
import org.apache.ibatis.annotations.Mapper;

/**
 * 合同收付款计划表  Mapper
 *
 * @author 测试用户
 */
@Mapper
public interface PlanInfoMapper extends BaseMapperX<PlanInfoDO> {

    default PageResult<PlanInfoDO> selectPage(PageParam reqVO, String htid) {
        return selectPage(reqVO, new LambdaQueryWrapperX<PlanInfoDO>()
            .eq(PlanInfoDO::getHtid, htid)
            .orderByDesc(PlanInfoDO::getId));
    }

    default int deleteByHtid(Long htid) {
        return delete(PlanInfoDO::getHtid, htid);
    }

    default PageResult<PlanInfoDO> selectPageDue(PlanInfoPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<PlanInfoDO>()
                .eqIfPresent(PlanInfoDO::getHtid, reqVO.getHtid())
                .eqIfPresent(PlanInfoDO::getJdh, reqVO.getJdh())
                .eqIfPresent(PlanInfoDO::getJdmc, reqVO.getJdmc())
                .eqIfPresent(PlanInfoDO::getSfklx, reqVO.getSfklx())
                .eqIfPresent(PlanInfoDO::getSfkfx, reqVO.getSfkfx())
                .eqIfPresent(PlanInfoDO::getYfje, reqVO.getYfje())
                .betweenIfPresent(PlanInfoDO::getYfrq, reqVO.getYfrq())
                .eqIfPresent(PlanInfoDO::getZffs, reqVO.getZffs())
                .eqIfPresent(PlanInfoDO::getFpfs, reqVO.getFpfs())
                .eqIfPresent(PlanInfoDO::getJssj, reqVO.getJssj())
                .likeIfPresent(PlanInfoDO::getKhfzr, reqVO.getKhfzr())
                .eqIfPresent(PlanInfoDO::getBz, reqVO.getBz())
                .betweenIfPresent(PlanInfoDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(PlanInfoDO::getId));
    }

}